/**
 * 角色管理
 * 
 * @param $
 */
(function($) {

	var SystemRoleObject = {
		$authorizationTree : "",
		init : function() {
			// 初始化角色表格
			this._init_role_table();
			// 添加角色按钮事件
			this._reg_add_role_btn();
			// 删除角色按钮事件
			this._reg_delete_role_btn();
			// 新增或者修改角色信息模态框的“提交按钮”
			this._reg_submit_btn();
			// 修改角色按钮
			this._reg_update_role_btn();
			// 权限按钮
			this._reg_authorization_btn();
			// 权限弹出框，确定按钮事件
			this._reg_authorization_submit_btn();
			// 成员 按钮事件
			this._reg_member_btn();
			// 添加成员按钮事件
			this._reg_member_add_btn();
			// 删除成员按钮事件
			this._reg_member_delete_btn();
		},
		// 删除成员按钮事件
		_reg_member_delete_btn : function() {
			$(document).on("click", ".pf-delete-memeber-btn", function() {

				// 角色id
				var roleId = $("#pf-add-member-modal").data("roleId");
				// 成员id
				var memberId = $(this).closest("tr").data("data").id;
				var index = layer.msg('正在处理，请稍候。。。', {
					icon : 16,
					shade : 0.3
				});
				$.ajax({
					type : "GET",
					cache : false,
					data : {
						roleId : roleId,
						memberId : memberId
					},
					dataType : "json",
					url : "/manage/system/role/delete/member",
					success : function(data) {
						// 关闭加载框
						layer.close(index);
						if (data != undefined && data.isSuccess == true) {
							layer.msg('删除成功', {
								time : 1000,
								offset : 0,
								shift : 6
							});
							// 刷新
							$("#pf-member-table").bootstrapTable("refresh", {
								pageNumber : 1
							});
						} else {
							layer.msg(data.message, {
								icon : 2,
								shade : 0.3,
								btn : [ '确定' ]
							});
						}
					}
				});

			});
		},
		// 添加成员按钮事件
		_reg_member_add_btn : function() {
			$(document).on("click", ".pf-add-memeber-btn", function() {
				// 角色id
				var roleId = $("#pf-add-member-modal").data("roleId");
				// 成员id
				var memberId = $(this).closest("tr").data("data").id;
				var index = layer.msg('正在处理，请稍候。。。', {
					icon : 16,
					shade : 0.3
				});
				$.ajax({
					type : "GET",
					cache : false,
					data : {
						roleId : roleId,
						memberId : memberId
					},
					dataType : "json",
					url : "/manage/system/role/add/member",
					success : function(data) {
						// 关闭加载框
						layer.close(index);
						if (data != undefined && data.isSuccess == true) {
							layer.msg('添加成功', {
								time : 1000,
								offset : 0,
								shift : 6
							});
							// 刷新
							$("#pf-member-table").bootstrapTable("refresh", {
								pageNumber : 1
							});
						} else {
							layer.msg(data.message, {
								icon : 2,
								shade : 0.3,
								btn : [ '确定' ]
							});
						}
					}
				});
			});
		},
		// 成员 按钮事件
		_reg_member_btn : function() {
			var isTableInit = false;
			$(document).on("click", ".pf-edit-member-btn", function() {
				var $tr = $(this).closest("tr");
				// 设置角色id
				$("#pf-add-member-modal").data("roleId", $tr.data("data").id)
				$("#pf-add-member-modal").modal("show");
				if (isTableInit == true) {
					_refresh_member_table($("#pf-member-table"), "/manage/system/role/get/members?roleId=" + $tr.data("data").id);
					_refresh_member_table($("#pf-member-all-table"), "/manage/system/role/get/members/all");
				} else {
					isTableInit = true;
					// 初始化角色中的成员表
					_init_memeber_table($("#pf-member-table"), "/manage/system/role/get/members?roleId=" + $tr.data("data").id, false);
					// 初始化所有用户表
					_init_memeber_table($("#pf-member-all-table"), "/manage/system/role/get/members/all", true);
				}
			});
			function _refresh_member_table($table, url) {
				$table.bootstrapTable("refresh", {
					url : url
				});
			}
			function _init_memeber_table($table, url, isAllMember) {
				$table
						.bootstrapTable({
							method : 'get',
							url : url,
							cache : false,
							// height
							// :
							// 400,
							sidePagination : 'server', // client
							// or
							// server
							search : true,
							queryParamsType : 'pageSize',
							striped : true,
							clickToSelect : true,
							pagination : true,
							pageSize : 50,
							pageList : [ 10, 20, 50, 100, 200 ],
							paginationDetail : true,
							paginationHAlign : 'right', // right,
							// left
							showColumns : true,
							showRefresh : true,
							minimumCountColumns : 2,
							checkboxHeader : false,
							clickToSelect : true,
							columns : [
									{
										field : 'id',
										title : '#',
										align : 'center',
										valign : 'middle',
										visible : false,
										sortable : false
									},
									{
										field : 'option',
										title : '操作',
										align : 'center',
										valign : 'middle',
										visible : true,
										formatter : function(value, row, index) {
											if (isAllMember == true) {
												return '  <button type="button" class="btn btn-primary btn-xs pf-add-memeber-btn"><i class="glyphicon glyphicon-ok"></i>选择</button>&nbsp;';
											} else {
												return '  <button type="button" class="btn btn-primary btn-xs pf-delete-memeber-btn"><i class="glyphicon glyphicon-trash"></i>删除</button>&nbsp;';
											}
										}
									},

									{
										field : 'realname',
										title : '姓名',
										align : 'center',
										valign : 'middle',
										visible : true,
										sortable : false
									}, {
										field : 'loginname',
										title : '登录名',
										align : 'center',
										valign : 'middle',
										visible : true,
										sortable : isAllMember
									}, {
										field : 'tel',
										title : '电话',
										align : 'center',
										valign : 'middle',
										visible : false,
										sortable : false
									}, {
										field : 'isAdmin',
										title : '是否管理员',
										align : 'center',
										valign : 'middle',
										visible : false,
										sortable : false,
										formatter : function(value, row, index) {
											if (value == true) {
												return '是';
											} else {
												return '否';
											}
										}
									}, {
										field : 'statusString',
										title : '状态',
										align : 'center',
										valign : 'middle',
										visible : false,
										sortable : false
									}, {
										field : 'email',
										title : '邮件',
										align : 'left',
										valign : 'middle',
										visible : false,
										sortable : false
									}, {
										field : 'lastLoginTime',
										title : '最后登录时间',
										align : 'center',
										valign : 'middle',
										visible : false,
										sortable : true
									}, {
										field : 'loginIp',
										title : '最后登录ip',
										align : 'center',
										valign : 'middle',
										visible : false,
										sortable : false
									}, {
										field : 'mark',
										title : '备注',
										align : 'center',
										valign : 'middle',
										visible : false,
										sortable : false
									} ]
						});
			}

		},
		// 权限弹出框，确定按钮事件
		_reg_authorization_submit_btn : function() {
			$(".pf-authorization-submit").click(function() {
				var index = layer.msg('正在处理，请稍候。。。', {
					icon : 16,
					shade : 0.3
				});
				// 传递给服务端的权限id集合
				var ids = "";
				var nodes = SystemRoleObject.$authorizationTree.getCheckedNodes(true);
				for (var i = 0, len = nodes.length; i < len; i++) {
					if (i == 0) {
						ids = nodes[i].id;
					} else {
						ids = ids + "," + nodes[i].id;
					}
				}
				$.ajax({
					type : "POST",
					cache : false,
					data : {
						roleId : $(this).data("roleId"),
						resourceIdsString : ids
					},
					dataType : "json",
					url : "/manage/system/role/save/resources",
					success : function(data) {
						// 关闭加载框
						layer.close(index);
						if (data != undefined && data.isSuccess == true) {
							$("#pf-add-authorization-modal").modal("hide");
						} else {
							layer.msg(data.message, {
								icon : 2,
								shade : 0.3,
								btn : [ '确定' ]
							});
						}
					}
				});

			});
		},
		// 权限按钮
		_reg_authorization_btn : function() {
			$(document).on("click", ".pf-edit-authorization-btn", function() {
				var $tr = $(this).closest("tr");
				// 设置角色id
				$(".pf-authorization-submit").data("roleId", $tr.data("data").id)

				var index = layer.msg('正在加载权限树，请稍候。。。', {
					icon : 16,
					shade : 0.3
				});
				$.ajax({
					type : "GET",
					cache : false,
					data : {
						roleId : $tr.data("data").id
					},
					dataType : "json",
					url : "/manage/system/role/get/resources",
					success : function(data) {
						// 关闭加载框
						layer.close(index);
						if (data != undefined && data.isSuccess == true) {
							// 重置权限树
							var setting = {
								check : {
									enable : true,
									autoCheckTrigger : true
								},
								data : {
									simpleData : {
										enable : true,
										idKey : "id",
										pIdKey : "parentId",
										rootPId : ""
									}
								}
							}
							SystemRoleObject.$authorizationTree = $.fn.zTree.init($("#authorizationTree"), setting, data.message);
							$("#pf-add-authorization-modal").modal("show");
						} else {
							layer.msg(data.message, {
								icon : 2,
								shade : 0.3,
								btn : [ '确定' ]
							});
						}
					}
				});

			});
		},
		// 修改角色按钮
		_reg_update_role_btn : function() {
			$(document).on("click", ".pf-update-role-btn", function() {
				// 重置form
				$("#pf-role-save-form").resetForm();
				var $tr = $(this).closest("tr");
				var data = $tr.data("data");
				// 显示弹窗
				$("#pf-modal-title").html("修改角色信息");
				$("#pf-add-role-modal").modal("show");
				// 设置数据
				$("#pf-role-save-form input[name='id']").val(data.id);
				$("#pf-role-save-form input[name='name']").val(data.name);
				$("#pf-role-save-form input[name='isEnable'][value='" + data.isEnable + "']").trigger("click");
				$("#pf-role-save-form input[name='mark']").val(data.mark);

			});
		},
		// 新增或者修改角色信息模态框的“提交按钮”
		_reg_submit_btn : function() {
			$(".pf-submit").click(function() {
				// 校验字段
				if (SystemRoleObject._validate_form_field() == false) {
					return;
				}
				// 处理中
				var index = layer.msg('正在处理，请稍候。。。', {
					icon : 16,
					shade : 0.3
				});
				$("#pf-role-save-form").ajaxSubmit({
					dataType : "json",
					success : function(data) {
						// 关闭加载框
						layer.close(index);
						if (data != undefined && data.isSuccess == true) {
							// 关闭 添加 用户的 form窗口
							$("#pf-add-role-modal").modal("hide");
							// 刷新
							$("#pf-roles-table").bootstrapTable("refresh");

						} else {
							layer.msg(data.message, {
								icon : 3,
								shade : 0.3,
								btn : [ '确定' ]
							});
						}
					}
				});
			});

		},
		// 删除角色按钮事件
		_reg_delete_role_btn : function() {
			$(document).on("click", ".pf-delete-role-btn", function() {
				var $tr = $(this).closest("tr");
				layer.msg('确定删除角色：' + $tr.data("data").name, {
					time : 0, // 20s后自动关闭
					icon : 3,
					shade : 0.3,
					btn : [ '确定', '取消' ],
					yes : function(index) {
						layer.close(index);
						var index = layer.msg('正在处理，请稍候。。。', {
							icon : 16,
							shade : 0.3
						});
						$.ajax({
							type : "GET",
							cache : false,
							data : {
								id : $tr.data("data").id
							},
							dataType : "json",
							url : "/manage/system/role/delete",
							success : function(data) {
								// 关闭加载框
								layer.close(index);
								if (data != undefined && data.isSuccess == true) {
									// 刷新
									$("#pf-roles-table").bootstrapTable("refresh");
								} else {
									layer.msg(data.message, {
										icon : 2,
										shade : 0.3,
										btn : [ '确定' ]
									});
								}
							}
						});

					}
				});
			});

		},
		// 添加角色按钮事件
		_reg_add_role_btn : function() {
			$("#pf-add-role-btn").click(function() {
				// 重置form
				$("#pf-role-save-form").resetForm();
				$("#pf-role-save-form input[name='id']").val("");
				$("#pf-modal-title").html("添加角色");
				$("#pf-add-role-modal").modal("show");
			});
		},
		// 初始化角色表格
		_init_role_table : function() {
			$("#pf-roles-table")
					.bootstrapTable(
							{
								method : 'get',
								url : "/manage/system/role/get/all",
								cache : false,
								// height : 400,
								sidePagination : 'server', // client or server
								queryParamsType : 'pageSize',
								striped : true,
								clickToSelect : true,
								pagination : true,
								pageSize : 10,
								pageList : [ 10, 20, 50, 100, 200 ],
								paginationDetail : true,
								paginationHAlign : 'right', // right, left
								showColumns : true,
								showRefresh : true,
								minimumCountColumns : 2,
								checkboxHeader : false,
								clickToSelect : true,
								columns : [
										{
											field : 'id',
											title : '#',
											align : 'center',
											valign : 'middle',
											visible : false,
											sortable : false
										},
										{
											field : 'name',
											title : '角色名称',
											align : 'center',
											valign : 'middle',
											visible : true,
											sortable : true
										},

										{
											field : 'isEnable',
											title : '是否启用',
											align : 'center',
											valign : 'middle',
											visible : true,
											sortable : false,
											formatter : function(value, row, index) {
												if (value == true) {
													return '是';
												} else {
													return '否';
												}
											}
										},
										{
											field : 'option',
											title : '操作',
											align : 'center',
											valign : 'middle',
											visible : true,
											sortable : false,
											formatter : function(value, row, index) {
												return '  <button type="button" class="btn btn-primary btn-xs pf-delete-role-btn"><i class="glyphicon glyphicon-trash"></i>删除</button>&nbsp;'
														+ '<button type="button" class="btn btn-primary btn-xs pf-update-role-btn"><i class="glyphicon glyphicon-pencil"></i>修改</button>&nbsp;'
														+ '<button type="button" class="btn btn-primary btn-xs pf-edit-member-btn"><i class="glyphicon glyphicon-user"></i>成员</button>&nbsp;'
														+ '<button type="button" class="btn btn-primary btn-xs pf-edit-authorization-btn"><i class="glyphicon glyphicon-lock"></i>权限</button>';
											}
										}, {
											field : 'mark',
											title : '备注',
											align : 'center',
											valign : 'middle',
											visible : true,
											sortable : false
										} ]
							});
		},
		/**
		 * 校验不能为空的字段
		 */
		_validate_form_field : function() {
			if ($("#pf-role-save-form input[name='loginname']").val() == "") {
				layer.msg("登录名不能为空", {
					time : 0,
					icon : 2,
					shade : 0.3,
					btn : [ '确定' ]
				});
				return false;
			} else if ($("#pf-role-save-form input[name='realname']").val() == "") {
				layer.msg("真实姓名不能为空", {
					time : 0,
					icon : 2,
					shade : 0.3,
					btn : [ '确定' ]
				});
				return false;
			} else {
				return true;
			}
		}
	}

	SystemRoleObject.init();
})(jQuery);